package com.elitedatai.mchtest.media.service;

import com.dji.sdk.cloudapi.media.MediaUploadCallbackRequest;

import java.util.List;


public interface IMediaService {

    /**
     * 根据文件指纹快速上传检查
     * 通过比对文件指纹，检查该文件是否已经存在于系统中，避免重复上传相同文件
     * @param workspaceId 工作空间ID，用于标识文件所属的工作空间
     * @param fingerprint 文件指纹，用于唯一标识一个文件
     * @return Boolean 如果文件已存在则返回true，否则返回false
     */
    Boolean fastUpload(String workspaceId, String fingerprint);

    /**
     * 保存媒体文件基本信息到数据库
     * 将上传的媒体文件基本信息存储到数据库中，包括文件名、大小、上传时间等元数据
     * @param workspaceId 工作空间ID，用于标识文件所属的工作空间
     * @param file 媒体上传回调请求对象，包含文件的详细信息
     * @return Integer 返回保存的记录数，通常为1表示保存成功
     */
    Long saveMediaFile(String workspaceId, MediaUploadCallbackRequest file);

    /**
     * 根据工作空间ID获取所有文件的简短指纹信息
     * 查询指定工作空间内所有媒体文件的简短指纹信息，用于快速比对和去重
     * @param workspaceId 工作空间ID，用于限定查询范围
     * @return List<String> 返回该工作空间内所有文件的简短指纹列表
     */
    List<String> getAllTinyFingerprintsByWorkspaceId(String workspaceId);

    /**
     * 根据传入的简短指纹数据查询已存在的指纹
     * 在指定工作空间中检查传入的简短指纹列表，返回其中已经存在的指纹信息
     * @param workspaceId 工作空间ID，用于限定查询范围
     * @param tinyFingerprints 简短指纹列表，需要检查是否已存在的指纹集合
     * @return List<String> 返回在系统中已存在的指纹列表
     */
    List<String> getExistTinyFingerprints(String workspaceId, List<String> tinyFingerprints);

}